<!DOCTYPE HTML>
<html lang="zh">
<head>
<title>Nginx 中文文档 - Module ngx_http_uwsgi_module | Docs4dev</title>
<meta charset="UTF-8">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<meta name="description" content="Nginx (engine x) 是一个高性能的HTTP和反向代理服务，也是一个IMAP/POP3/SMTP服务。">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="HandheldFriendly" content="true">
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta property="og:type" content="website">
<meta property="og:title" content="Nginx 中文文档 - Module ngx_http_uwsgi_module">
<meta property="og:url" content="https://www.docs4dev.com/docs/zh/nginx/current/reference/http-ngx_http_uwsgi_module.html">
<meta property="og:site_name" content="Docs4dev">
<meta property="og:locale" content="zh_CN">
<meta name="twitter:card" content="Nginx (engine x) 是一个高性能的HTTP和反向代理服务，也是一个IMAP/POP3/SMTP服务。">
<meta name="generator" content="Docs4dev template engine">
<link rel="stylesheet" href="static/css/app.min.css">
<link rel="shortcut icon" href="https://www.docs4dev.com/static/images/favicon.ico" type="image/x-icon">
<script async="" src="static/js/js.js"></script>
<script async="" src="static/js/adsbygoogle.js" crossorigin="anonymous"></script>
<script>
    window.dataLayer = window.dataLayer || [];

    function gtag() {
      dataLayer.push(arguments);
    }

    gtag('js', new Date());
    gtag('config', 'UA-129571937-1');
  </script>
<link rel="amphtml" href="https://www.docs4dev.com/amp/docs/zh/nginx/current/reference/http-ngx_http_uwsgi_module.html">
<script type="application/ld+json">{"name":null,"headline":"Nginx 中文文档-Module ngx_http_uwsgi_module","inLanguage":"zh-CN","version":"current","image":"/static/icon/icon-nginx.svg","datePublished":"2021-05-20T12:51:01Z","dateCreated":"2021-05-20T12:51:01Z","dateModified":"2021-07-07T12:48:29Z","@context":"https://schema.org/","@type":"APIReference","abstract":"Nginx (engine x) 是一个高性能的HTTP和反向代理服务，也是一个IMAP/POP3/SMTP服务。"}</script>
</head>
<body>
<div class="book with-summary">
<div class="book-summary">
<div class="logo">
<a href="index.html" style="color: inherit;">
<img src="static/picture/icon-nginx.svg" style="width: 48px; height: 48px;" alt="Logo">
</a>
<b style="color: inherit; margin-left: 8px;">Nginx 中文文档</b>
</div>
<div class="item">
<div>
<label for="version">版本</label>
<select id="version" onchange="onVersionChange(this)">
<option value="current" selected="selected">current</option>
</select>
</div>
<div style="margin-top: 8px;">
<label for="language">语言</label>
<select id="language" onchange="onLangChange(this)" value="zh">
<option value="en">English</option>
<option value="zh" selected="selected">中文</option>
</select>
</div>

</div>
<div class="item menus">
<a title="Table of Contents" style="margin-right: 8px;" href="index.html">
<i class="fa fa-chevron-left"></i>
<span style="margin-left: 2px;">返回目录</span>
</a>
</div>
<nav role="navigation" id="navigation">
<ul class="summary">
<li class="chapter"> <a href="install.html" title="Introduction"> Introduction </a>
<ul class="articles">
<li class="chapter"> <a href="install.html" title="Installing nginx"> Installing nginx </a> </li>
<li class="chapter"> <a href="configure.html" title="从源代码构建  Nginx"> 从源代码构建 Nginx </a> </li>
<li class="chapter"> <a href="beginners_guide.html" title="Beginner's Guide"> Beginner's Guide </a> </li>
<li class="chapter"> <a href="control.html" title="Controlling nginx"> Controlling nginx </a> </li>
<li class="chapter"> <a href="events.html" title="连接处理方法"> 连接处理方法 </a> </li>
<li class="chapter"> <a href="hash.html" title="设置哈希"> 设置哈希 </a> </li>
<li class="chapter"> <a href="debugging_log.html" title="调试日志"> 调试日志 </a> </li>
<li class="chapter"> <a href="syslog.html" title="记录到系统日志"> 记录到系统日志 </a> </li>
<li class="chapter"> <a href="syntax.html" title="配置文件测量单位"> 配置文件测量单位 </a> </li>
<li class="chapter"> <a href="switches.html" title="Command-line parameters"> Command-line parameters </a> </li>
<li class="chapter"> <a href="windows.html" title="Windows 版  Nginx"> Windows 版 Nginx </a> </li>
<li class="chapter"> <a href="http-request_processing.html" title="Nginx 如何处理请求"> Nginx 如何处理请求 </a> </li>
<li class="chapter"> <a href="http-server_names.html" title="Server names"> Server names </a> </li>
<li class="chapter"> <a href="http-load_balancing.html" title="使用  Nginx 作为  HTTP 负载均衡器"> 使用 Nginx 作为 HTTP 负载均衡器 </a> </li>
<li class="chapter"> <a href="http-configuring_https_servers.html" title="配置  HTTPS 服务器"> 配置 HTTPS 服务器 </a> </li>
<li class="chapter"> <a href="stream-stream_processing.html" title="Nginx 如何处理  TCP/UDP 会话"> Nginx 如何处理 TCP/UDP 会话 </a> </li>
<li class="chapter"> <a href="njs-index.html" title="用  njs 编写脚本"> 用 njs 编写脚本 </a> </li>
</ul> </li>
<li class="chapter"> <a href="howto_build_on_win32.html" title="How-To"> How-To </a>
<ul class="articles">
<li class="chapter"> <a href="howto_build_on_win32.html" title="使用  Visual C 在  Win32 平台上构建  Nginx"> 使用 Visual C 在 Win32 平台上构建 Nginx </a> </li>
<li class="chapter"> <a href="nginx_dtrace_pid_provider.html" title="使用  DTrace pid 提供程序调试  nginx"> 使用 DTrace pid 提供程序调试 nginx </a> </li>
<li class="chapter"> <a href="http-converting_rewrite_rules.html" title="转换重写规则"> 转换重写规则 </a> </li>
<li class="chapter"> <a href="http-websocket.html" title="WebSocket proxying"> WebSocket proxying </a> </li>
</ul> </li>
<li class="chapter"> <a href="contributing_changes.html" title="Development"> Development </a>
<ul class="articles">
<li class="chapter"> <a href="contributing_changes.html" title="Contributing Changes"> Contributing Changes </a> </li>
<li class="chapter"> <a href="dev-development_guide.html" title="Development guide"> Development guide </a> </li>
</ul> </li>
<li class="chapter"> <a href="dirindex.html" title="Modules reference"> Modules reference </a>
<ul class="articles">
<li class="chapter"> <a href="dirindex.html" title="指令的字母索引"> 指令的字母索引 </a> </li>
<li class="chapter"> <a href="varindex.html" title="变量按字母顺序索引"> 变量按字母顺序索引 </a> </li>
<li class="chapter"> <a href="ngx_core_module.html" title="Core functionality"> Core functionality </a> </li>
<li class="chapter"> <a href="http-ngx_http_core_module.html" title="ngx_http_core_module"> ngx_http_core_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_access_module.html" title="ngx_http_access_module"> ngx_http_access_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_addition_module.html" title="ngx_http_addition_module"> ngx_http_addition_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_api_module.html" title="ngx_http_api_module"> ngx_http_api_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_auth_basic_module.html" title="ngx_http_auth_basic_module"> ngx_http_auth_basic_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_auth_jwt_module.html" title="ngx_http_auth_jwt_module"> ngx_http_auth_jwt_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_auth_request_module.html" title="ngx_http_auth_request_module"> ngx_http_auth_request_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_autoindex_module.html" title="ngx_http_autoindex_module"> ngx_http_autoindex_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_browser_module.html" title="ngx_http_browser_module"> ngx_http_browser_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_charset_module.html" title="ngx_http_charset_module"> ngx_http_charset_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_dav_module.html" title="ngx_http_dav_module"> ngx_http_dav_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_empty_gif_module.html" title="ngx_http_empty_gif_module"> ngx_http_empty_gif_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_f4f_module.html" title="ngx_http_f4f_module"> ngx_http_f4f_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_fastcgi_module.html" title="ngx_http_fastcgi_module"> ngx_http_fastcgi_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_flv_module.html" title="ngx_http_flv_module"> ngx_http_flv_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_geo_module.html" title="ngx_http_geo_module"> ngx_http_geo_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_geoip_module.html" title="ngx_http_geoip_module"> ngx_http_geoip_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_grpc_module.html" title="ngx_http_grpc_module"> ngx_http_grpc_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_gunzip_module.html" title="ngx_http_gunzip_module"> ngx_http_gunzip_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_gzip_module.html" title="ngx_http_gzip_module"> ngx_http_gzip_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_gzip_static_module.html" title="ngx_http_gzip_static_module"> ngx_http_gzip_static_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_headers_module.html" title="ngx_http_headers_module"> ngx_http_headers_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_hls_module.html" title="ngx_http_hls_module"> ngx_http_hls_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_image_filter_module.html" title="ngx_http_image_filter_module"> ngx_http_image_filter_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_index_module.html" title="ngx_http_index_module"> ngx_http_index_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_js_module.html" title="ngx_http_js_module"> ngx_http_js_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_keyval_module.html" title="ngx_http_keyval_module"> ngx_http_keyval_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_limit_conn_module.html" title="ngx_http_limit_conn_module"> ngx_http_limit_conn_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_limit_req_module.html" title="ngx_http_limit_req_module"> ngx_http_limit_req_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_log_module.html" title="ngx_http_log_module"> ngx_http_log_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_map_module.html" title="ngx_http_map_module"> ngx_http_map_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_memcached_module.html" title="ngx_http_memcached_module"> ngx_http_memcached_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_mirror_module.html" title="ngx_http_mirror_module"> ngx_http_mirror_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_mp4_module.html" title="ngx_http_mp4_module"> ngx_http_mp4_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_perl_module.html" title="ngx_http_perl_module"> ngx_http_perl_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_proxy_module.html" title="ngx_http_proxy_module"> ngx_http_proxy_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_random_index_module.html" title="ngx_http_random_index_module"> ngx_http_random_index_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_realip_module.html" title="ngx_http_realip_module"> ngx_http_realip_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_referer_module.html" title="ngx_http_referer_module"> ngx_http_referer_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_rewrite_module.html" title="ngx_http_rewrite_module"> ngx_http_rewrite_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_scgi_module.html" title="ngx_http_scgi_module"> ngx_http_scgi_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_secure_link_module.html" title="ngx_http_secure_link_module"> ngx_http_secure_link_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_session_log_module.html" title="ngx_http_session_log_module"> ngx_http_session_log_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_slice_module.html" title="ngx_http_slice_module"> ngx_http_slice_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_spdy_module.html" title="ngx_http_spdy_module"> ngx_http_spdy_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_split_clients_module.html" title="ngx_http_split_clients_module"> ngx_http_split_clients_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_ssi_module.html" title="ngx_http_ssi_module"> ngx_http_ssi_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_ssl_module.html" title="ngx_http_ssl_module"> ngx_http_ssl_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_status_module.html" title="ngx_http_status_module"> ngx_http_status_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_stub_status_module.html" title="ngx_http_stub_status_module"> ngx_http_stub_status_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_sub_module.html" title="ngx_http_sub_module"> ngx_http_sub_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_upstream_module.html" title="ngx_http_upstream_module"> ngx_http_upstream_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_upstream_conf_module.html" title="ngx_http_upstream_conf_module"> ngx_http_upstream_conf_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_upstream_hc_module.html" title="ngx_http_upstream_hc_module"> ngx_http_upstream_hc_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_userid_module.html" title="ngx_http_userid_module"> ngx_http_userid_module </a> </li>
<li class="chapter"> <a href="" title="ngx_http_uwsgi_module"> ngx_http_uwsgi_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_v2_module.html" title="ngx_http_v2_module"> ngx_http_v2_module </a> </li>
<li class="chapter"> <a href="http-ngx_http_xslt_module.html" title="ngx_http_xslt_module"> ngx_http_xslt_module </a> </li>
<li class="chapter"> <a href="mail-ngx_mail_core_module.html" title="ngx_mail_core_module"> ngx_mail_core_module </a> </li>
<li class="chapter"> <a href="mail-ngx_mail_auth_http_module.html" title="ngx_mail_auth_http_module"> ngx_mail_auth_http_module </a> </li>
<li class="chapter"> <a href="mail-ngx_mail_proxy_module.html" title="ngx_mail_proxy_module"> ngx_mail_proxy_module </a> </li>
<li class="chapter"> <a href="mail-ngx_mail_ssl_module.html" title="ngx_mail_ssl_module"> ngx_mail_ssl_module </a> </li>
<li class="chapter"> <a href="mail-ngx_mail_imap_module.html" title="ngx_mail_imap_module"> ngx_mail_imap_module </a> </li>
<li class="chapter"> <a href="mail-ngx_mail_pop3_module.html" title="ngx_mail_pop3_module"> ngx_mail_pop3_module </a> </li>
<li class="chapter"> <a href="mail-ngx_mail_smtp_module.html" title="ngx_mail_smtp_module"> ngx_mail_smtp_module </a> </li>
<li class="chapter"> <a href="stream-ngx_stream_core_module.html" title="ngx_stream_core_module"> ngx_stream_core_module </a> </li>
<li class="chapter"> <a href="stream-ngx_stream_access_module.html" title="ngx_stream_access_module"> ngx_stream_access_module </a> </li>
<li class="chapter"> <a href="stream-ngx_stream_geo_module.html" title="ngx_stream_geo_module"> ngx_stream_geo_module </a> </li>
<li class="chapter"> <a href="stream-ngx_stream_geoip_module.html" title="ngx_stream_geoip_module"> ngx_stream_geoip_module </a> </li>
<li class="chapter"> <a href="stream-ngx_stream_js_module.html" title="ngx_stream_js_module"> ngx_stream_js_module </a> </li>
<li class="chapter"> <a href="stream-ngx_stream_keyval_module.html" title="ngx_stream_keyval_module"> ngx_stream_keyval_module </a> </li>
<li class="chapter"> <a href="stream-ngx_stream_limit_conn_module.html" title="ngx_stream_limit_conn_module"> ngx_stream_limit_conn_module </a> </li>
<li class="chapter"> <a href="stream-ngx_stream_log_module.html" title="ngx_stream_log_module"> ngx_stream_log_module </a> </li>
<li class="chapter"> <a href="stream-ngx_stream_map_module.html" title="ngx_stream_map_module"> ngx_stream_map_module </a> </li>
<li class="chapter"> <a href="stream-ngx_stream_proxy_module.html" title="ngx_stream_proxy_module"> ngx_stream_proxy_module </a> </li>
<li class="chapter"> <a href="stream-ngx_stream_realip_module.html" title="ngx_stream_realip_module"> ngx_stream_realip_module </a> </li>
<li class="chapter"> <a href="stream-ngx_stream_return_module.html" title="ngx_stream_return_module"> ngx_stream_return_module </a> </li>
<li class="chapter"> <a href="stream-ngx_stream_split_clients_module.html" title="ngx_stream_split_clients_module"> ngx_stream_split_clients_module </a> </li>
<li class="chapter"> <a href="stream-ngx_stream_ssl_module.html" title="ngx_stream_ssl_module"> ngx_stream_ssl_module </a> </li>
<li class="chapter"> <a href="stream-ngx_stream_ssl_preread_module.html" title="ngx_stream_ssl_preread_module"> ngx_stream_ssl_preread_module </a> </li>
<li class="chapter"> <a href="stream-ngx_stream_upstream_module.html" title="ngx_stream_upstream_module"> ngx_stream_upstream_module </a> </li>
<li class="chapter"> <a href="stream-ngx_stream_upstream_hc_module.html" title="ngx_stream_upstream_hc_module"> ngx_stream_upstream_hc_module </a> </li>
<li class="chapter"> <a href="stream-ngx_stream_zone_sync_module.html" title="ngx_stream_zone_sync_module"> ngx_stream_zone_sync_module </a> </li>
<li class="chapter"> <a href="ngx_google_perftools_module.html" title="ngx_google_perftools_module"> ngx_google_perftools_module </a> </li>
</ul> </li>
</ul>
</nav>
</div>
<div class="book-body">
<div class="body-inner">
<header class="book-header">
<div class="dropdown pull-right js-toolbar-action">
<a class="btn toggle-dropdown" aria-label="Language" href="#">
<i class="fa fa-globe"></i>
</a>
<div class="dropdown-menu dropdown-left">
<div class="dropdown-caret"><span class="caret-outer"></span><span class="caret-inner"></span></div>
<div class="buttons">
<button class="button size-1" onclick="changeLang('zh_CN')">中文</button>
</div>
<div class="buttons">
<button class="button size-1" onclick="changeLang('en_US')">English</button>
</div>
</div>
</div>
<a class="btn pull-right js-toolbar-action non-mobile" aria-label="Sign up" href="register.html">
<i class="fa fa-sign-in"></i> <span>注册</span>
</a>
<a class="btn pull-right js-toolbar-action non-mobile" aria-label="Sign in" href="register.html">
<i class="fa fa-sign-in"></i>
<span>登录</span>
</a>
<a class="btn pull-left js-toolbar-action btn-summary" href="#"><i class="fa fa-align-justify"></i></a>
<div class="dropdown pull-left font-settings js-toolbar-action">
<a class="btn toggle-dropdown" aria-label="Font Settings" href="#">
<i class="fa fa-font"></i>
</a>
<div class="dropdown-menu dropdown-right">
<div class="dropdown-caret"><span class="caret-outer"></span><span class="caret-inner"></span></div>
<div class="buttons">
<button class="button size-2 font-reduce">A</button>
<button class="button size-2 font-enlarge">A</button>
</div>
<div class="buttons">
<button class="button size-2 family-serif">Serif</button>
<button class="button size-2 family-sans">Sans</button>
</div>
<div class="buttons">
<button class="button size-3 theme-white">White</button>
<button class="button size-3 theme-sepia">Sepia</button>
<button class="button size-3 theme-night">Night</button>
</div>
</div>
</div>
<a class="btn pull-left js-toolbar-action non-mobile" aria-label="Home" href="zh.html">
<i class="fa fa-home"></i> <span>首页</span>
</a>
<a class="btn pull-left js-toolbar-action non-mobile" aria-label="Guide" href="javascript:window.open('https://www.javadoc.org/');">
<i class="fa fa-book"></i> <span>API Docs</span>
</a>
<a class="btn pull-left js-toolbar-action non-mobile" aria-label="Tools" href="index1.html">
<i class="fa fa-gears"></i> <span>工具</span>
</a>
<div class="dropdown pull-left js-toolbar-action mobile">
<a class="btn toggle-dropdown" aria-label="Language" href="#">
<i class="fa fa-chevron-down"></i>
</a>
<div class="dropdown-menu dropdown-right">
<div class="dropdown-caret"><span class="caret-outer"></span><span class="caret-inner"></span></div>
<div class="buttons">
<a class="button size-1" aria-label="Home" href="zh.html">
<i class="fa fa-home"></i> <span>首页</span>
</a>
</div>
<div class="buttons">
<a class="button size-1" aria-label="Guide" href="javascript:window.open('https://www.javadoc.org/');">
<i class="fa fa-book"></i> <span>API Docs</span>
</a>
</div>
<div class="buttons">
<a class="button size-1" aria-label="Tools" href="index1.html">
<i class="fa fa-gears"></i> <span>工具</span>
</a>
</div>
</div>
</div>
<div id="autocomplete" class="pull-right"></div>
<span id="toolbar-title"></span>
</header>
<div class="page-wrapper" tabindex="-1" role="main">
<div class="page-inner">
<section class="normal markdown-section">
<div id="content">
<h1>Module ngx_http_uwsgi_module</h1>
<div><ins class="adsbygoogle" style="display:block; text-align:center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-6108808167664152" data-ad-slot="6964403648"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
<div><ul>
<li><a href="#example">Example Configuration</a></li>
<li><a href="#directives">Directives</a>
<ul>
<li><a href="#uwsgi_bind">uwsgi_bind</a></li>
<li><a href="#uwsgi_buffer_size">uwsgi_buffer_size</a></li>
<li><a href="#uwsgi_buffering">uwsgi_buffering</a></li>
<li><a href="#uwsgi_buffers">uwsgi_buffers</a></li>
<li><a href="#uwsgi_busy_buffers_size">uwsgi_busy_buffers_size</a></li>
<li><a href="#uwsgi_cache">uwsgi_cache</a></li>
<li><a href="#uwsgi_cache_background_update">uwsgi_cache_background_update</a></li>
<li><a href="#uwsgi_cache_bypass">uwsgi_cache_bypass</a></li>
<li><a href="#uwsgi_cache_key">uwsgi_cache_key</a></li>
<li><a href="#uwsgi_cache_lock">uwsgi_cache_lock</a></li>
<li><a href="#uwsgi_cache_lock_age">uwsgi_cache_lock_age</a></li>
<li><a href="#uwsgi_cache_lock_timeout">uwsgi_cache_lock_timeout</a></li>
<li><a href="#uwsgi_cache_max_range_offset">uwsgi_cache_max_range_offset</a></li>
<li><a href="#uwsgi_cache_methods">uwsgi_cache_methods</a></li>
<li><a href="#uwsgi_cache_min_uses">uwsgi_cache_min_uses</a></li>
<li><a href="#uwsgi_cache_path">uwsgi_cache_path</a></li>
<li><a href="#uwsgi_cache_purge">uwsgi_cache_purge</a></li>
<li><a href="#uwsgi_cache_revalidate">uwsgi_cache_revalidate</a></li>
<li><a href="#uwsgi_cache_use_stale">uwsgi_cache_use_stale</a></li>
<li><a href="#uwsgi_cache_valid">uwsgi_cache_valid</a></li>
<li><a href="#uwsgi_connect_timeout">uwsgi_connect_timeout</a></li>
<li><a href="#uwsgi_force_ranges">uwsgi_force_ranges</a></li>
<li><a href="#uwsgi_hide_header">uwsgi_hide_header</a></li>
<li><a href="#uwsgi_ignore_client_abort">uwsgi_ignore_client_abort</a></li>
<li><a href="#uwsgi_ignore_headers">uwsgi_ignore_headers</a></li>
<li><a href="#uwsgi_intercept_errors">uwsgi_intercept_errors</a></li>
<li><a href="#uwsgi_limit_rate">uwsgi_limit_rate</a></li>
<li><a href="#uwsgi_max_temp_file_size">uwsgi_max_temp_file_size</a></li>
<li><a href="#uwsgi_modifier1">uwsgi_modifier1</a></li>
<li><a href="#uwsgi_modifier2">uwsgi_modifier2</a></li>
<li><a href="#uwsgi_next_upstream">uwsgi_next_upstream</a></li>
<li><a href="#uwsgi_next_upstream_timeout">uwsgi_next_upstream_timeout</a></li>
<li><a href="#uwsgi_next_upstream_tries">uwsgi_next_upstream_tries</a></li>
<li><a href="#uwsgi_no_cache">uwsgi_no_cache</a></li>
<li><a href="#uwsgi_param">uwsgi_param</a></li>
<li><a href="#uwsgi_pass">uwsgi_pass</a></li>
<li><a href="#uwsgi_pass_header">uwsgi_pass_header</a></li>
<li><a href="#uwsgi_pass_request_body">uwsgi_pass_request_body</a></li>
<li><a href="#uwsgi_pass_request_headers">uwsgi_pass_request_headers</a></li>
<li><a href="#uwsgi_read_timeout">uwsgi_read_timeout</a></li>
<li><a href="#uwsgi_request_buffering">uwsgi_request_buffering</a></li>
<li><a href="#uwsgi_send_timeout">uwsgi_send_timeout</a></li>
<li><a href="#uwsgi_socket_keepalive">uwsgi_socket_keepalive</a></li>
<li><a href="#uwsgi_ssl_certificate">uwsgi_ssl_certificate</a></li>
<li><a href="#uwsgi_ssl_certificate_key">uwsgi_ssl_certificate_key</a></li>
<li><a href="#uwsgi_ssl_ciphers">uwsgi_ssl_ciphers</a></li>
<li><a href="#uwsgi_ssl_crl">uwsgi_ssl_crl</a></li>
<li><a href="#uwsgi_ssl_name">uwsgi_ssl_name</a></li>
<li><a href="#uwsgi_ssl_password_file">uwsgi_ssl_password_file</a></li>
<li><a href="#uwsgi_ssl_protocols">uwsgi_ssl_protocols</a></li>
<li><a href="#uwsgi_ssl_server_name">uwsgi_ssl_server_name</a></li>
<li><a href="#uwsgi_ssl_session_reuse">uwsgi_ssl_session_reuse</a></li>
<li><a href="#uwsgi_ssl_trusted_certificate">uwsgi_ssl_trusted_certificate</a></li>
<li><a href="#uwsgi_ssl_verify">uwsgi_ssl_verify</a></li>
<li><a href="#uwsgi_ssl_verify_depth">uwsgi_ssl_verify_depth</a></li>
<li><a href="#uwsgi_store">uwsgi_store</a></li>
<li><a href="#uwsgi_store_access">uwsgi_store_access</a></li>
<li><a href="#uwsgi_temp_file_write_size">uwsgi_temp_file_write_size</a></li>
<li><a href="#uwsgi_temp_path">uwsgi_temp_path</a><br><a href="" id="summary"></a></li>
</ul>
</li>
</ul>
<p><code>ngx_http_uwsgi_module</code>模块允许将请求传递到 uwsgi 服务器。</p>
<p><a href="" id="example"></a></p>
<h4 id="example-configuration"><a href="#example-configuration" id="example-configuration"></a>Example Configuration</h4>
<pre><code class="hljs language-shell">location / {
    include    uwsgi_params;
    uwsgi_pass localhost:9000;
}
</code></pre>
<p><a href="" id="directives"></a></p>
<h4 id="directives"><a href="#directives" id="directives"></a>Directives</h4>
<p><a href="" id="uwsgi_bind"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_bind address [transparent] | off;</code></td></tr>
<tr><td>Default:</td><td>—</td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>与 uwsgi 服务器的传出连接源自具有可选端口(1.11.2)的指定本地 IP 地址。参数值可以包含变量(1.3.12)。特殊值<code>off</code>(1.3.12)取消了从以前的配置级别继承的<code>uwsgi_bind</code>指令的效果，这使系统可以自动分配本地 IP 地址和端口。</p>
<p><a href="" id="uwsgi_bind_transparent"></a></p>
<p><code>transparent</code>参数(1.11.0)允许到 uwsgi 服务器的传出连接源自 nonlocalIP 地址，例如，源自客户端的真实 IP 地址：</p>
<pre><code class="hljs language-shell">uwsgi_bind $remote_addr transparent;
</code></pre>
<p>为了使此参数起作用，通常必须使用<a href="ngx_core_module.html#user">superuser</a>特权运行 nginx worker 进程。在 Linux 上，不需要(1.13.8)，就好像指定了<code>transparent</code>参数一样，辅助进程从主进程继承<code>CAP_NET_RAW</code>功能。还必须配置内核路由表以拦截来自 uwsgi 服务器的网络流量。</p>
<p><a href="" id="uwsgi_buffer_size"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_buffer_size size;</code></td></tr>
<tr><td>Default:</td><td><code>uwsgi_buffer_size 4k|8k;</code></td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>设置用于读取从 uwsgi 服务器接收到的响应的第一部分的缓冲区的<code>size</code>。这部分通常包含一个小的响应头。默认情况下，缓冲区大小等于一个内存页。根据平台的不同，它可以是 4K 或 8K。但是，它可以做得更小。</p>
<p><a href="" id="uwsgi_buffering"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_buffering on | off;</code></td></tr>
<tr><td>Default:</td><td><code>uwsgi_buffering on;</code></td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>启用或禁用来自 uwsgi 服务器的响应缓冲。</p>
<p>启用缓冲后，nginx 会尽快从 uwsgi 服务器收到响应，并将其保存到<a href="#uwsgi_buffer_size">uwsgi_buffer_size</a>和<a href="#uwsgi_buffers">uwsgi_buffers</a>指令设置的缓冲区中。如果整个响应都无法容纳到内存中，则可以将一部分响应保存到磁盘上的<a href="#uwsgi_temp_path">temporary file</a>。写入临时文件由<a href="#uwsgi_max_temp_file_size">uwsgi_max_temp_file_size</a>和<a href="#uwsgi_temp_file_write_size">uwsgi_temp_file_write_size</a>指令控制。</p>
<p>禁用缓冲后，响应一收到就立即同步传递给客户端。 nginx 不会尝试从 uwsgi 服务器读取整个响应。 <a href="#uwsgi_buffer_size">uwsgi_buffer_size</a>指令设置了 nginx 一次可以从服务器接收的最大数据大小。</p>
<p>也可以通过在“ X-Accel-Buffering”响应标题字段中传递“ <code>yes</code>”或“ <code>no</code>”来启用或禁用缓冲。可以使用<a href="#uwsgi_ignore_headers">uwsgi_ignore_headers</a>指令禁用此功能。</p>
<p><a href="" id="uwsgi_buffers"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_buffers number size;</code></td></tr>
<tr><td>Default:</td><td><code>uwsgi_buffers 8 4k|8k;</code></td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>为单个连接设置用于从 uwsgi 服务器读取响应的缓冲区的<code>number</code>和<code>size</code>。默认情况下，缓冲区大小等于一个内存页。根据平台的不同，它可以是 4K 或 8K。</p>
<p><a href="" id="uwsgi_busy_buffers_size"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_busy_buffers_size size;</code></td></tr>
<tr><td>Default:</td><td><code>uwsgi_busy_buffers_size 8k|16k;</code></td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>启用来自 uwsgi 服务器的<a href="#uwsgi_buffering">buffering</a>响应后，将限制在忙于向客户端发送响应而尚未完全读取响应的缓冲区总数<code>size</code>。同时，其余的缓冲区可用于读取响应，并在需要时将响应的一部分缓冲到临时文件中。默认情况下，<code>size</code>受<a href="#uwsgi_buffer_size">uwsgi_buffer_size</a>和<a href="#uwsgi_buffers">uwsgi_buffers</a>指令设置的两个缓冲区的大小限制。</p>
<p><a href="" id="uwsgi_cache"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_cache zone | off;</code></td></tr>
<tr><td>Default:</td><td><code>uwsgi_cache off;</code></td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>定义用于缓存的共享内存区域。同一区域可以在多个地方使用。参数值可以包含变量(1.7.9)。 <code>off</code>参数禁用从先前配置级别继承的缓存。</p>
<p><a href="" id="uwsgi_cache_background_update"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_cache_background_update on | off;</code></td></tr>
<tr><td>Default:</td><td><code>uwsgi_cache_background_update off;</code></td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>该指令出现在 1.11.10 版本中。</p>
<p>允许启动后台子请求以更新过期的缓存项，同时将陈旧的缓存响应返回给客户端。请注意，在更新过时的缓存响应时，有必要<a href="#uwsgi_cache_use_stale_updating">allow</a>使用。</p>
<p><a href="" id="uwsgi_cache_bypass"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_cache_bypass string ...;</code></td></tr>
<tr><td>Default:</td><td>—</td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>定义不从缓存中获取响应的条件。如果字符串参数的至少一个值不为空且不等于“ 0”，那么将不会从缓存中获取响应：</p>
<pre><code class="hljs language-shell">uwsgi_cache_bypass $cookie_nocache $arg_nocache$arg_comment;
uwsgi_cache_bypass $http_pragma    $http_authorization;
</code></pre>
<p>可以与<a href="#uwsgi_no_cache">uwsgi_no_cache</a>指令一起使用。</p>
<p><a href="" id="uwsgi_cache_key"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_cache_key string;</code></td></tr>
<tr><td>Default:</td><td>—</td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>定义用于缓存的密钥，例如</p>
<pre><code class="hljs language-shell">uwsgi_cache_key localhost:9000$request_uri;
</code></pre>
<p><a href="" id="uwsgi_cache_lock"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_cache_lock on | off;</code></td></tr>
<tr><td>Default:</td><td><code>uwsgi_cache_lock off;</code></td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>该指令出现在版本 1.1.12 中。</p>
<p>启用后，一次只允许一个请求通过将请求传递给 uwsgi 服务器来填充根据<a href="#uwsgi_cache_key">uwsgi_cache_key</a>指令标识的新缓存元素。在<a href="#uwsgi_cache_lock_timeout">uwsgi_cache_lock_timeout</a>指令设置的时间之前，同一缓存元素的其他请求将 await 响应出现在缓存中，或者 await 该元素被释放的缓存锁。</p>
<p><a href="" id="uwsgi_cache_lock_age"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_cache_lock_age time;</code></td></tr>
<tr><td>Default:</td><td><code>uwsgi_cache_lock_age 5s;</code></td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>该指令出现在版本 1.7.8 中。</p>
<p>如果针对指定的<code>time</code>传递到 uwsgi 服务器的最后一个用于填充新缓存元素的请求尚未完成，则可以再将一个请求传递给 uwsgi 服务器。</p>
<p><a href="" id="uwsgi_cache_lock_timeout"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_cache_lock_timeout time;</code></td></tr>
<tr><td>Default:</td><td><code>uwsgi_cache_lock_timeout 5s;</code></td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>该指令出现在版本 1.1.12 中。</p>
<p>为<a href="#uwsgi_cache_lock">uwsgi_cache_lock</a>设置超时。当<code>time</code>过期时，该请求将被传递到 uwsgi 服务器，但是，该响应将不会被缓存。</p>
<div class="alert callout info"><p class="title"><i class="fa fa-info-circle"></i>Note</p><div><p>在 1.7.8 之前，可以缓存响应。</p>
</div></div>
<p><a href="" id="uwsgi_cache_max_range_offset"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_cache_max_range_offset number;</code></td></tr>
<tr><td>Default:</td><td>—</td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>该指令出现在 1.11.6 版本中。</p>
<p>设置字节范围请求的字节偏移量。如果范围超出偏移量，则范围请求将传递到 uwsgi 服务器，并且不会缓存响应。</p>
<p><a href="" id="uwsgi_cache_methods"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_cache_methods GET | HEAD | POST ...;</code></td></tr>
<tr><td>Default:</td><td><code>uwsgi_cache_methods GET HEAD;</code></td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>如果此伪指令中列出了客户端请求方法，则将缓存响应。尽管建议显式指定“ <code>GET</code>”和“ <code>HEAD</code>”方法，但始终将它们添加到列表中。另请参见<a href="#uwsgi_no_cache">uwsgi_no_cache</a>指令。</p>
<p><a href="" id="uwsgi_cache_min_uses"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_cache_min_uses number;</code></td></tr>
<tr><td>Default:</td><td><code>uwsgi_cache_min_uses 1;</code></td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>设置<code>number</code>请求，之后将缓存响应。</p>
<p><a href="" id="uwsgi_cache_path"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_cache_path path [levels=levels] [use_temp_path=on|off] keys_zone=name:size [inactive=time] [max_size=size] [min_free=size] [manager_files=number] [manager_sleep=time] [manager_threshold=time] [loader_files=number] [loader_sleep=time] [loader_threshold=time] [purger=on|off] [purger_files=number] [purger_sleep=time] [purger_threshold=time];</code></td></tr>
<tr><td>Default:</td><td>—</td></tr>
<tr><td>Context:</td><td><code>http</code></td></tr>
</tbody>
</table>
<p>设置缓存的路径和其他参数。缓存数据存储在文件中。缓存中的文件名是对<a href="#uwsgi_cache_key">cache key</a>应用 MD5 功能的结果。 <code>levels</code>参数定义缓存的层次结构级别：从 1 到 3，每个级别接受值 1 或 2.例如，在以下配置中</p>
<pre><code class="hljs language-shell">uwsgi_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m;
</code></pre>
<p>缓存中的文件名如下所示：</p>
<pre><code class="hljs language-shell">/data/nginx/cache/c/29/b7f54b2df7773722d382f4809d65029c
</code></pre>
<p>首先将缓存的响应写入临时文件，然后重命名该文件。从 0.8.9 版本开始，可以将临时文件和缓存放在不同的文件系统上。但是，请注意，在这种情况下，文件是跨两个文件系统复制的，而不是廉价的重命名操作。因此，建议对于任何给定位置，将高速缓存和保存临时文件的目录都放在同一文件系统上。基于<code>use_temp_path</code>参数(1.7.10)设置临时文件的目录。如果省略此参数或将其设置为值<code>on</code>，则将使用<a href="#uwsgi_temp_path">uwsgi_temp_path</a>指令为给定位置设置的目录。如果该值设置为<code>off</code>，则临时文件将直接放置在缓存目录中。</p>
<p>此外，所有活动键和有关数据的信息都存储在共享存储区中，该存储区的<code>name</code>和<code>size</code>由<code>keys_zone</code>参数配置。一个 1 MB 的区域可以存储大约 8000 个密钥。</p>
<div class="alert callout info"><p class="title"><i class="fa fa-info-circle"></i>Note</p><div><p>作为<a href="javascript:window.open('https://nginx.com/products/');" target="_blank" rel="noopener noreferrer">commercial subscription</a>的一部分，共享内存区域还存储扩展的缓存<a href="http-ngx_http_api_module.html#http_caches_">information</a>，因此，需要为相同数量的键指定更大的区域大小。例如，一个 1 MB 的区域可以存储大约 4000 个密钥。</p>
</div></div>
<p>在<code>inactive</code>参数指定的时间内未访问的缓存数据将被从缓存中删除，无论它们是否新鲜。默认情况下，<code>inactive</code>设置为 10 分钟。</p>
<p><a href="" id="uwsgi_cache_path_max_size"></a></p>
<p>特殊的“高速缓存管理器”过程监视具有高速缓存的文件系统上<code>max_size</code>参数设置的最大高速缓存大小和<code>min_free</code>(1.19.1)参数设置的最小可用空间。当超出大小或没有足够的可用空间时，它将删除最近最少使用的数据。在由<code>manager_files</code>，<code>manager_threshold</code>和<code>manager_sleep</code>参数(1.11.5)配置的迭代中删除数据。在一次迭代中，最多删除<code>manager_files</code>个项目(默认为 100)。一次迭代的持续时间受<code>manager_threshold</code>参数的限制(默认情况下为 200 毫秒)。在迭代之间，由<code>manager_sleep</code>参数配置的暂停(默认为 50 毫秒)。</p>
<p>启动一分钟后，特殊的“缓存加载器”过程被激活。它将有关存储在文件系统上的先前缓存的数据的信息加载到缓存区域中。加载也以迭代方式完成。在一次迭代中，最多加载<code>loader_files</code>个项目(默认情况下为 100)。此外，一次迭代的持续时间受到<code>loader_threshold</code>参数的限制(默认为 200 毫秒)。在迭代之间，由<code>loader_sleep</code>参数配置的暂停(默认为 50 毫秒)。</p>
<p>此外，以下参数是我们的<a href="javascript:window.open('https://nginx.com/products/');" target="_blank" rel="noopener noreferrer">commercial subscription</a>的一部分：</p>
<h4 id="purger-开关"><a href="#purger" id="purger"></a> purger =开|关</h4>
<ul>
<li>指示是否将由缓存清除器(1.7.12)从磁盘上删除与<a href="#uwsgi_cache_purge">wildcard key</a>匹配的缓存条目。将参数设置为<code>on</code>(默认值为<code>off</code>)将激活“缓存清除器”过程，该过程将永久性地遍历所有缓存条目，并删除与通配符匹配的条目。</li>
</ul>
<h4 id="purger-files-number"><a href="#purger_files" id="purger_files"></a> purger_files= number</h4>
<ul>
<li>设置一次迭代(1.7.12)期间要扫描的项目数。默认情况下，<code>purger_files</code>设置为 10.</li>
</ul>
<h4 id="purger-threshold-number"><a href="#purger_threshold" id="purger_threshold"></a> purger_threshold= number</h4>
<ul>
<li>设置一次迭代的持续时间(1.7.12)。默认情况下，<code>purger_threshold</code>设置为 50 毫秒。</li>
</ul>
<h4 id="purger-sleep-number"><a href="#purger_sleep" id="purger_sleep"></a> purger_sleep= number</h4>
<ul>
<li>设置迭代之间的暂停(1.7.12)。默认情况下，<code>purger_sleep</code>设置为 50 毫秒。</li>
</ul>
<div class="alert callout info"><p class="title"><i class="fa fa-info-circle"></i>Note</p><div><p>在版本 1.7.3、1.7.7 和 1.11.10 中，缓存头格式已更改。升级到较新的 nginx 版本后，以前缓存的响应将被视为无效。</p>
</div></div>
<p><a href="" id="uwsgi_cache_purge"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_cache_purge string ...;</code></td></tr>
<tr><td>Default:</td><td>—</td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>该指令出现在 1.5.7 版中。</p>
<p>定义将请求视为高速缓存清除请求的条件。如果字符串参数的至少一个值不为空且不等于“ 0”，则将删除具有相应<a href="#uwsgi_cache_key">cache key</a>的缓存条目。通过返回 204(无内容)响应来指示成功操作的结果。</p>
<p>如果清除请求的<a href="#uwsgi_cache_key">cache key</a>以星号(“ <code>*</code>”)结尾，则所有与通配符匹配的高速缓存条目都将从高速缓存中删除。但是，这些条目将保留在磁盘上，直到它们被删除为<a href="#uwsgi_cache_path">inactivity</a>或被<a href="#purger">cache purger</a>(1.7.12)处理或客户端尝试访问它们为止。</p>
<p>Example configuration:</p>
<pre><code class="hljs language-shell">uwsgi_cache_path /data/nginx/cache keys_zone=cache_zone:10m;

map $request_method $purge_method {
    PURGE   1;
    default 0;
}

server {
    ...
    location / {
        uwsgi_pass        backend;
        uwsgi_cache       cache_zone;
        uwsgi_cache_key   $uri;
        uwsgi_cache_purge $purge_method;
    }
}
</code></pre>
<div class="alert callout info"><p class="title"><i class="fa fa-info-circle"></i>Note</p><div><p>此功能是我们<a href="javascript:window.open('https://nginx.com/products/');" target="_blank" rel="noopener noreferrer">commercial subscription</a>的一部分。</p>
</div></div>
<p><a href="" id="uwsgi_cache_revalidate"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_cache_revalidate on | off;</code></td></tr>
<tr><td>Default:</td><td><code>uwsgi_cache_revalidate off;</code></td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>该指令出现在 1.5.7 版中。</p>
<p>使用带有“ If-Modified-Since”和“ If-None-Match”头域的条件请求，启用过期缓存项的重新验证。</p>
<p><a href="" id="uwsgi_cache_use_stale"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_cache_use_stale error | timeout | invalid_header | updating | http_500 | http_503 | http_403 | http_404 | http_429 | off ...;</code></td></tr>
<tr><td>Default:</td><td><code>uwsgi_cache_use_stale off;</code></td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>确定在与 uwsgi 服务器通信期间发生错误时在什么情况下可以使用过时的缓存响应。该指令的参数与<a href="#uwsgi_next_upstream">uwsgi_next_upstream</a>指令的参数匹配。</p>
<p>如果无法选择用于处理请求的 uwsgi 服务器，则<code>error</code>参数还允许使用陈旧的缓存响应。</p>
<p><a href="" id="uwsgi_cache_use_stale_updating"></a></p>
<p>另外，如果当前正在更新，则<code>updating</code>参数允许使用陈旧的缓存响应。这样可以在更新缓存的数据时最大程度地减少对 uwsgi 服务器的访问次数。</p>
<p>在响应过时(1.11.10)后，还可以在响应 Headers 中直接启用使用过时的缓存响应达指定的秒数。这比使用指令参数的优先级低。</p>
<ul>
<li>
<p>如果当前正在更新“ Cache_Control”头字段的“ <a href="javascript:window.open('https://tools.ietf.org/html/rfc5861#section-3');" target="_blank" rel="noopener noreferrer">stale-while-revalidate</a>”extensions，则允许使用陈旧的缓存响应。</p>
</li>
<li>
<p>“ Cache-Control”Headers 字段的“ <a href="javascript:window.open('https://tools.ietf.org/html/rfc5861#section-4');" target="_blank" rel="noopener noreferrer">stale-if-error</a>”extensions 允许在发生错误的情况下使用过期的缓存响应。</p>
</li>
</ul>
<p>为了在填充新的缓存元素时最大程度地减少对 uwsgi 服务器的访问次数，可以使用<a href="#uwsgi_cache_lock">uwsgi_cache_lock</a>指令。</p>
<p><a href="" id="uwsgi_cache_valid"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_cache_valid [code ...] time;</code></td></tr>
<tr><td>Default:</td><td>—</td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>设置不同响应代码的缓存时间。例如，以下指令</p>
<pre><code class="hljs language-shell">uwsgi_cache_valid 200 302 10m;
uwsgi_cache_valid 404      1m;
</code></pre>
<p>为代码 200 和 302 的响应设置 10 分钟的缓存，为代码 404 的响应设置 1 分钟的缓存。</p>
<p>如果仅指定缓存<code>time</code></p>
<pre><code class="hljs language-shell">uwsgi_cache_valid 5m;
</code></pre>
<p>那么仅缓存 200、301 和 302 响应。</p>
<p>另外，可以指定<code>any</code>参数来缓存任何响应：</p>
<pre><code class="hljs language-shell">uwsgi_cache_valid 200 302 10m;
uwsgi_cache_valid 301      1h;
uwsgi_cache_valid any      1m;
</code></pre>
<p>缓存参数也可以直接在响应头中设置。这比使用伪指令设置缓存时间具有更高的优先级。</p>
<ul>
<li>
<p>“ X-Accel-Expires”Headers 字段以秒为单位设置响应的缓存时间。零值禁用缓存响应。如果该值以<code>@</code>前缀开头，则它设置自 Epoch 以来的绝对时间(以秒为单位)，可以在该绝对时间之前缓存响应。</p>
</li>
<li>
<p>如果标题不包括“ X-Accel-Expires”字段，则可以在标题字段“ Expires”或“ Cache-Control”中设置缓存参数。</p>
</li>
<li>
<p>如果 Headers 包含“ Set-Cookie”字段，则不会缓存此类响应。</p>
</li>
<li>
<p>如果 Headers 包含具有特殊值“ <code>*</code>”的“ Vary”字段，则不会缓存此类响应(1.7.7)。如果 Headers 包含带有另一个值的“ Vary”字段，则将考虑相应的请求 Headers 字段(1.7.7)来缓存此类响应。</p>
</li>
</ul>
<p>可以使用<a href="#uwsgi_ignore_headers">uwsgi_ignore_headers</a>指令禁用对这些响应头字段中的一个或多个的处理。</p>
<p><a href="" id="uwsgi_connect_timeout"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_connect_timeout time;</code></td></tr>
<tr><td>Default:</td><td><code>uwsgi_connect_timeout 60s;</code></td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>定义用于与 uwsgi 服务器构建连接的超时。请注意，此超时通常不能超过 75 秒。</p>
<p><a href="" id="uwsgi_force_ranges"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_force_ranges on | off;</code></td></tr>
<tr><td>Default:</td><td><code>uwsgi_force_ranges off;</code></td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>该指令出现在版本 1.7.7 中。</p>
<p>对来自 uwsgi 服务器的缓存和未缓存响应均启用字节范围支持，无论这些响应中的“接受范围”字段如何。</p>
<p><a href="" id="uwsgi_hide_header"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_hide_header field;</code></td></tr>
<tr><td>Default:</td><td>—</td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>默认情况下，nginx 不会将 uwsgi 服务器的响应的 Headers 字段“ Status”和“ X-Accel -...”传递给客户端。 <code>uwsgi_hide_header</code>指令设置了不会传递的其他字段。相反，如果需要允许传递字段，则可以使用<a href="#uwsgi_pass_header">uwsgi_pass_header</a>指令。</p>
<p><a href="" id="uwsgi_ignore_client_abort"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_ignore_client_abort on | off;</code></td></tr>
<tr><td>Default:</td><td><code>uwsgi_ignore_client_abort off;</code></td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>确定在客户端不 await 响应就关闭连接时是否应关闭与 uwsgi 服务器的连接。</p>
<p><a href="" id="uwsgi_ignore_headers"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_ignore_headers field ...;</code></td></tr>
<tr><td>Default:</td><td>—</td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>禁用来自 uwsgi 服务器的某些响应 Headers 字段的处理。可以忽略以下字段：“ X-Accel-Redirect”，“ X-Accel-Expires”，“ X-Accel-Limit-Rate”(1.1.6)，“ X-Accel-Buffering”(1.1.6) ，“ X-Accel-Charset”(1.1.6)，“ Expires”，“ Cache-Control”，“ Set-Cookie”(0.8.44)和“ Vary”(1.7.7)。</p>
<p>如果未禁用，则处理这些头字段具有以下效果：</p>
<ul>
<li>
<p>“ X-Accel-Expires”，“ Expires”，“ Cache-Control”，“ Set-Cookie”和“ Vary”设置响应<a href="#uwsgi_cache_valid">caching</a>的参数；</p>
</li>
<li>
<p>“ X-Accel-Redirect”对指定的 URI 执行<a href="http-ngx_http_core_module.html#internal">internal redirect</a>；</p>
</li>
<li>
<p>“ X-Accel-Limit-Rate”设置<a href="http-ngx_http_core_module.html#limit_rate">rate limit</a>用于将响应传输到客户端；</p>
</li>
<li>
<p>“ X-Accel-Buffering”启用或禁用响应<a href="#uwsgi_buffering">buffering</a>；</p>
</li>
<li>
<p>“ X-Accel-Charset”设置所需的响应<a href="http-ngx_http_charset_module.html#charset">charset</a>。</p>
</li>
</ul>
<p><a href="" id="uwsgi_intercept_errors"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_intercept_errors on | off;</code></td></tr>
<tr><td>Default:</td><td><code>uwsgi_intercept_errors off;</code></td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>确定是否应将具有大于或等于 300 的代码的 uwsgi 服务器响应传递给客户端，或者应将其拦截并重定向到 nginx 以使用<a href="http-ngx_http_core_module.html#error_page">error_page</a>指令进行处理。</p>
<p><a href="" id="uwsgi_limit_rate"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_limit_rate rate;</code></td></tr>
<tr><td>Default:</td><td><code>uwsgi_limit_rate 0;</code></td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>该指令出现在版本 1.7.7 中。</p>
<p>限制从 uwsgi 服务器读取响应的速度。 <code>rate</code>以每秒字节数指定。零值禁用速率限制。该限制是根据请求设置的，因此，如果 nginx 同时打开两个与 uwsgi 服务器的连接，则总速率将是指定限制的两倍。仅当启用<a href="#uwsgi_buffering">buffering</a>来自 uwsgi 服务器的响应时，此限制才有效。</p>
<p><a href="" id="uwsgi_max_temp_file_size"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_max_temp_file_size size;</code></td></tr>
<tr><td>Default:</td><td><code>uwsgi_max_temp_file_size 1024m;</code></td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>如果启用了来自 uwsgi 服务器的<a href="#uwsgi_buffering">buffering</a>个响应，并且整个响应不适合<a href="#uwsgi_buffer_size">uwsgi_buffer_size</a>和<a href="#uwsgi_buffers">uwsgi_buffers</a>伪指令设置的缓冲区，则可以将一部分响应保存到临时文件中。此伪指令设置临时文件的最大<code>size</code>。一次写入<a href="#uwsgi_temp_file_write_size">uwsgi_temp_file_write_size</a>指令设置写入临时文件的数据大小。</p>
<p>零值禁用对临时文件的响应的缓冲。</p>
<div class="alert callout info"><p class="title"><i class="fa fa-info-circle"></i>Note</p><div><p>此限制不适用于磁盘上为<a href="#uwsgi_cache">cached</a>或<a href="#uwsgi_store">stored</a>的响应。</p>
</div></div>
<p><a href="" id="uwsgi_modifier1"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_modifier1 number;</code></td></tr>
<tr><td>Default:</td><td><code>uwsgi_modifier1 0;</code></td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>设置<a href="javascript:window.open('https://uwsgi-docs.readthedocs.org/en/latest/Protocol.html#uwsgi-packet-header');" target="_blank" rel="noopener noreferrer">uwsgi 数据包头</a>中<code>modifier1</code>字段的值。</p>
<p><a href="" id="uwsgi_modifier2"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_modifier2 number;</code></td></tr>
<tr><td>Default:</td><td><code>uwsgi_modifier2 0;</code></td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>设置<a href="javascript:window.open('https://uwsgi-docs.readthedocs.org/en/latest/Protocol.html#uwsgi-packet-header');" target="_blank" rel="noopener noreferrer">uwsgi 数据包头</a>中<code>modifier2</code>字段的值。</p>
<p><a href="" id="uwsgi_next_upstream"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_next_upstream error | timeout | invalid_header | http_500 | http_503 | http_403 | http_404 | http_429 | non_idempotent | off ...;</code></td></tr>
<tr><td>Default:</td><td><code>uwsgi_next_upstream error timeout;</code></td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>指定在哪种情况下将请求传递到下一个服务器：</p>
<ul>
<li>
<p><code>error</code></p>
<ul>
<li>与服务器构建连接，向服务器传递请求或读取响应头时发生错误；</li>
</ul>
</li>
<li>
<p><code>timeout</code></p>
<ul>
<li>与服务器构建连接，向服务器传递请求或读取响应 Headers 时发生超时；</li>
</ul>
</li>
<li>
<p><code>invalid_header</code></p>
<ul>
<li>服务器返回了空的或无效的响应；</li>
</ul>
</li>
<li>
<p><code>http_500</code></p>
<ul>
<li>服务器返回响应，代码为 500；</li>
</ul>
</li>
<li>
<p><code>http_503</code></p>
<ul>
<li>服务器返回响应，代码为 503；</li>
</ul>
</li>
<li>
<p><code>http_403</code></p>
<ul>
<li>服务器返回响应，代码为 403；</li>
</ul>
</li>
<li>
<p><code>http_404</code></p>
<ul>
<li>服务器返回了代码为 404 的响应；</li>
</ul>
</li>
<li>
<p><code>http_429</code></p>
<ul>
<li>服务器返回响应，代码为 429(1.11.13)；</li>
</ul>
</li>
</ul>
<h4 id="non-idempotent"><a href="#non_idempotent" id="non_idempotent"></a> non_idempotent</h4>
<ul>
<li>
<p>通常，如果请求已发送到上游服务器(1.9.13)，则使用<a href="javascript:window.open('https://tools.ietf.org/html/rfc7231#section-4.2.2');" target="_blank" rel="noopener noreferrer">non-idempotent</a>方法(<code>POST</code>，<code>LOCK</code>，<code>PATCH</code>)的请求不会传递到下一个服务器。明确启用此选项将允许重试此类请求；</p>
</li>
<li>
<p><code>off</code></p>
<ul>
<li>禁用将请求传递到下一个服务器。</li>
</ul>
</li>
</ul>
<p>应该记住的是，只有在还没有任何内容发送给客户端的情况下，才有可能将请求传递给下一台服务器。即，如果在响应的传输过程中发生错误或超时，则无法解决该问题。</p>
<p>该指令还定义了与服务器通信的<a href="http-ngx_http_upstream_module.html#max_fails">unsuccessful attempt</a>。 <code>error</code>，<code>timeout</code>和<code>invalid_header</code>的情况始终被认为是失败的尝试，即使未在指令中指定它们也是如此。 <code>http_500</code>，<code>http_503</code>和<code>http_429</code>的情况只有在指令中指定时才被认为是失败的尝试。决不会将<code>http_403</code>和<code>http_404</code>的情况视为不成功的尝试。</p>
<p>将请求传递到下一个服务器可能受到<a href="#uwsgi_next_upstream_tries">尝试次数</a>和<a href="#uwsgi_next_upstream_timeout">time</a>的限制。</p>
<p><a href="" id="uwsgi_next_upstream_timeout"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_next_upstream_timeout time;</code></td></tr>
<tr><td>Default:</td><td><code>uwsgi_next_upstream_timeout 0;</code></td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>该指令出现在版本 1.7.5 中。</p>
<p>限制可以将请求传递到<a href="#uwsgi_next_upstream">next server</a>的时间。 <code>0</code>值关闭了此限制。</p>
<p><a href="" id="uwsgi_next_upstream_tries"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_next_upstream_tries number;</code></td></tr>
<tr><td>Default:</td><td><code>uwsgi_next_upstream_tries 0;</code></td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>该指令出现在版本 1.7.5 中。</p>
<p>限制将请求传递到<a href="#uwsgi_next_upstream">next server</a>的可能尝试次数。 <code>0</code>值关闭了此限制。</p>
<p><a href="" id="uwsgi_no_cache"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_no_cache string ...;</code></td></tr>
<tr><td>Default:</td><td>—</td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>定义不将响应保存到缓存的条件。如果字符串参数的至少一个值不为空且不等于“ 0”，则将不保存响应：</p>
<pre><code class="hljs language-shell">uwsgi_no_cache $cookie_nocache $arg_nocache$arg_comment;
uwsgi_no_cache $http_pragma    $http_authorization;
</code></pre>
<p>可以与<a href="#uwsgi_cache_bypass">uwsgi_cache_bypass</a>指令一起使用。</p>
<p><a href="" id="uwsgi_param"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_param parameter value [if_not_empty];</code></td></tr>
<tr><td>Default:</td><td>—</td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>设置一个<code>parameter</code>，该参数应传递给 uwsgi 服务器。 <code>value</code>可以包含文本，变量及其组合。当且仅当当前级别上未定义<code>uwsgi_param</code>指令时，这些指令才从上一级继承。</p>
<p>应将标准<a href="javascript:window.open('https://tools.ietf.org/html/rfc3875#section-4.1');" target="_blank" rel="noopener noreferrer">CGI 环境变量</a>作为 uwsgiHeaders 提供，请参见发行版中提供的<code>uwsgi_params</code>文件：</p>
<pre><code class="hljs language-shell">location / {
    include uwsgi_params;
    ...
}
</code></pre>
<p>如果指令是用<code>if_not_empty</code>(1.1.11)指定的，则仅当其值不为空时，此类参数才会传递给服务器：</p>
<pre><code class="hljs language-shell">uwsgi_param HTTPS $https if_not_empty;
</code></pre>
<p><a href="" id="uwsgi_pass"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_pass [protocol://]address;</code></td></tr>
<tr><td>Default:</td><td>—</td></tr>
<tr><td>Context:</td><td><code>location</code> , <code>if in location</code></td></tr>
</tbody>
</table>
<p>设置 uwsgi 服务器的协议和地址。作为<code>protocol</code>，可以指定“ <code>uwsgi</code>”或“ <code>suwsgi</code>”(安全的 uwsgi，基于 SSL 的 uwsgi)。该地址可以指定为域名或 IP 地址以及端口：</p>
<pre><code class="hljs language-shell">uwsgi_pass localhost:9000;
uwsgi_pass uwsgi://localhost:9000;
uwsgi_pass suwsgi://[2001:db8::1]:9090;
</code></pre>
<p>或作为 UNIX 域套接字路径：</p>
<pre><code class="hljs language-shell">uwsgi_pass unix:/tmp/uwsgi.socket;
</code></pre>
<p>如果一个域名解析为多个地址，则所有这些地址都将以循环方式使用。另外，可以将地址指定为<a href="http-ngx_http_upstream_module.html">server group</a>。</p>
<p>参数值可以包含变量。在这种情况下，如果将地址指定为域名，则在描述的<a href="http-ngx_http_upstream_module.html">server groups</a>中搜索该名称，如果找不到，则使用<a href="http-ngx_http_core_module.html#resolver">resolver</a>确定。</p>
<div class="alert callout info"><p class="title"><i class="fa fa-info-circle"></i>Note</p><div><p>从 1.5.8 版开始支持安全的 uwsgi 协议。</p>
</div></div>
<p><a href="" id="uwsgi_pass_header"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_pass_header field;</code></td></tr>
<tr><td>Default:</td><td>—</td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>允许将<a href="#uwsgi_hide_header">otherwise disabled</a>Headers 字段从 uwsgi 服务器传递到客户端。</p>
<p><a href="" id="uwsgi_pass_request_body"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_pass_request_body on | off;</code></td></tr>
<tr><td>Default:</td><td><code>uwsgi_pass_request_body on;</code></td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>指示是否将原始请求正文传递到 uwsgi 服务器。另请参见<a href="#uwsgi_pass_request_headers">uwsgi_pass_request_headers</a>指令。</p>
<p><a href="" id="uwsgi_pass_request_headers"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_pass_request_headers on | off;</code></td></tr>
<tr><td>Default:</td><td><code>uwsgi_pass_request_headers on;</code></td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>指示是否将原始请求的 Headers 字段传递到 uwsgi 服务器。另请参见<a href="#uwsgi_pass_request_body">uwsgi_pass_request_body</a>指令。</p>
<p><a href="" id="uwsgi_read_timeout"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_read_timeout time;</code></td></tr>
<tr><td>Default:</td><td><code>uwsgi_read_timeout 60s;</code></td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>定义超时以从 uwsgi 服务器读取响应。超时仅在两次连续的读取操作之间设置，而不用于传输整个响应。如果 uwsgi 服务器在此时间内未传输任何内容，则连接已关闭。</p>
<p><a href="" id="uwsgi_request_buffering"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_request_buffering on | off;</code></td></tr>
<tr><td>Default:</td><td><code>uwsgi_request_buffering on;</code></td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>该指令出现在 1.7.11 版本中。</p>
<p>启用或禁用客户端请求正文的缓冲。</p>
<p>启用缓冲后，在将请求发送到 uwsgi 服务器之前，整个请求正文都是<a href="http-ngx_http_core_module.html#client_body_buffer_size">read</a>来自客户端。</p>
<p>禁用缓冲后，请求主体将在收到请求后立即发送到 uwsgi 服务器。在这种情况下，如果 nginx 已经开始发送请求正文，则无法将请求传递给<a href="#uwsgi_next_upstream">next server</a>。</p>
<p>当使用 HTTP/1.1 分块传输编码发送原始请求正文时，无论指令值如何，都将对请求正文进行缓冲。</p>
<p><a href="" id="uwsgi_send_timeout"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_send_timeout time;</code></td></tr>
<tr><td>Default:</td><td><code>uwsgi_send_timeout 60s;</code></td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>设置将请求传输到 uwsgi 服务器的超时。超时仅在两个连续的写操作之间设置，而不用于整个请求的传输。如果 uwsgi 服务器在此时间内未收到任何信息，则连接已关闭。</p>
<p><a href="" id="uwsgi_socket_keepalive"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_socket_keepalive on | off;</code></td></tr>
<tr><td>Default:</td><td><code>uwsgi_socket_keepalive off;</code></td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>该指令出现在 1.15.6 版中。</p>
<p>为与 uwsgi 服务器的传出连接配置“ TCP keepalive”行为。默认情况下，os 的设置对套接字有效。如果伪指令设置为值“ <code>on</code>”，则将为套接字打开<code>SO_KEEPALIVE</code>套接字选项。</p>
<p><a href="" id="uwsgi_ssl_certificate"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_ssl_certificate file;</code></td></tr>
<tr><td>Default:</td><td>—</td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>该指令出现在版本 1.7.8 中。</p>
<p>指定带有<code>file</code>证书的 PEM 格式的证书，用于对受保护的 uwsgi 服务器进行身份验证。</p>
<p><a href="" id="uwsgi_ssl_certificate_key"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_ssl_certificate_key file;</code></td></tr>
<tr><td>Default:</td><td>—</td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>该指令出现在版本 1.7.8 中。</p>
<p>使用 PEM 格式的密钥指定一个<code>file</code>，用于对安全的 uwsgi 服务器进行身份验证。</p>
<p>可以指定值<code>engine</code>：<code>name</code>：<code>id</code>而不是<code>file</code>(1.7.9)，后者从 OpenSSL 引擎<code>name</code>加载具有指定<code>id</code>的 Secret 密钥。</p>
<p><a href="" id="uwsgi_ssl_ciphers"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_ssl_ciphers ciphers;</code></td></tr>
<tr><td>Default:</td><td><code>uwsgi_ssl_ciphers DEFAULT;</code></td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>该指令出现在 1.5.8 版中。</p>
<p>为对安全的 uwsgi 服务器的请求指定启用的密码。密码以 OpenSSL 库可以理解的格式指定。</p>
<p>可以使用“ <code>openssl ciphers</code>”命令查看完整列表。</p>
<p><a href="" id="uwsgi_ssl_crl"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_ssl_crl file;</code></td></tr>
<tr><td>Default:</td><td>—</td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>该指令出现在 1.7.0 版中。</p>
<p>以 PEM 格式指定<code>file</code>带有吊销证书(CRL)，用于<a href="#uwsgi_ssl_verify">verify</a>受保护的 uwsgi 服务器的证书。</p>
<p><a href="" id="uwsgi_ssl_name"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_ssl_name name;</code></td></tr>
<tr><td>Default:</td><td><code>uwsgi_ssl_name host from uwsgi_pass;</code></td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>该指令出现在 1.7.0 版中。</p>
<p>与安全的 uwsgi 服务器构建连接时，允许覆盖用于<a href="#uwsgi_ssl_verify">verify</a>安全的 uwsgi 服务器的证书的服务器名称，以及<a href="#uwsgi_ssl_server_name">通过 SNI</a>。</p>
<p>默认情况下，使用<a href="#uwsgi_pass">uwsgi_pass</a>的主机部分。</p>
<p><a href="" id="uwsgi_ssl_password_file"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_ssl_password_file file;</code></td></tr>
<tr><td>Default:</td><td>—</td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>该指令出现在版本 1.7.8 中。</p>
<p>指定一个带有<a href="#uwsgi_ssl_certificate_key">secret keys</a>密码短语的<code>file</code>，其中每个密码短语都在单独的行上指定。加载密钥时依次尝试使用密码短语。</p>
<p><a href="" id="uwsgi_ssl_protocols"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2] [TLSv1.3];</code></td></tr>
<tr><td>Default:</td><td><code>uwsgi_ssl_protocols TLSv1 TLSv1.1 TLSv1.2;</code></td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>该指令出现在 1.5.8 版中。</p>
<p>为请求到安全的 uwsgi 服务器的请求启用指定的协议。</p>
<p><a href="" id="uwsgi_ssl_server_name"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_ssl_server_name on | off;</code></td></tr>
<tr><td>Default:</td><td><code>uwsgi_ssl_server_name off;</code></td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>该指令出现在 1.7.0 版中。</p>
<p>与安全的 uwsgi 服务器构建连接时，启用或禁用服务器名称通过<a href="javascript:window.open('https://en.wikipedia.org/wiki/Server_Name_Indication');" target="_blank" rel="noopener noreferrer">TLS 服务器名称指示扩展</a>(SNI，RFC 6066)的传递。</p>
<p><a href="" id="uwsgi_ssl_session_reuse"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_ssl_session_reuse on | off;</code></td></tr>
<tr><td>Default:</td><td><code>uwsgi_ssl_session_reuse on;</code></td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>该指令出现在 1.5.8 版中。</p>
<p>确定在使用受保护的 uwsgi 服务器时是否可以重用 SSL 会话。如果日志中出现错误“ <code>SSL3_GET_FINISHED:digest check failed</code>”，请尝试禁用会话重用。</p>
<p><a href="" id="uwsgi_ssl_trusted_certificate"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_ssl_trusted_certificate file;</code></td></tr>
<tr><td>Default:</td><td>—</td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>该指令出现在 1.7.0 版中。</p>
<p>指定<code>file</code>带有 PEM 格式的受信任 CA 证书，该证书用于<a href="#uwsgi_ssl_verify">verify</a>受保护的 uwsgi 服务器的证书。</p>
<p><a href="" id="uwsgi_ssl_verify"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_ssl_verify on | off;</code></td></tr>
<tr><td>Default:</td><td><code>uwsgi_ssl_verify off;</code></td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>该指令出现在 1.7.0 版中。</p>
<p>启用或禁用对受保护的 uwsgi 服务器证书的验证。</p>
<p><a href="" id="uwsgi_ssl_verify_depth"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_ssl_verify_depth number;</code></td></tr>
<tr><td>Default:</td><td><code>uwsgi_ssl_verify_depth 1;</code></td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>该指令出现在 1.7.0 版中。</p>
<p>在安全的 uwsgi 服务器证书链中设置验证深度。</p>
<p><a href="" id="uwsgi_store"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_store on | off | string;</code></td></tr>
<tr><td>Default:</td><td><code>uwsgi_store off;</code></td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>允许将文件保存到磁盘。 <code>on</code>参数保存具有与指令<a href="http-ngx_http_core_module.html#alias">alias</a>或<a href="http-ngx_http_core_module.html#root">root</a>相对应的路径的文件。 <code>off</code>参数禁用文件保存。另外，可以使用带有变量的<code>string</code>显式设置文件名：</p>
<pre><code class="hljs language-shell">uwsgi_store /data/www$original_uri;
</code></pre>
<p>根据收到的“ Last-Modified”响应头字段设置文件的修改时间。首先将响应写入临时文件，然后重命名该文件。从 0.8.9 版本开始，可以将临时文件和永久存储放在不同的文件系统上。但是，请注意，在这种情况下，文件是跨两个文件系统复制的，而不是廉价的重命名操作。因此，建议将对于任何给定位置的已保存文件和由<a href="#uwsgi_temp_path">uwsgi_temp_path</a>指令设置的保存临时文件的目录都放在同一文件系统上。</p>
<p>该指令可用于创建静态不可更改文件的本地副本，例如：</p>
<pre><code class="hljs language-shell">location /images/ {
    root               /data/www;
    error_page         404 = /fetch$uri;
}

location /fetch/ {
    internal;

    uwsgi_pass         backend:9000;
    ...

    uwsgi_store        on;
    uwsgi_store_access user:rw group:rw all:r;
    uwsgi_temp_path    /data/temp;

    alias              /data/www/;
}
</code></pre>
<p><a href="" id="uwsgi_store_access"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_store_access users:permissions ...;</code></td></tr>
<tr><td>Default:</td><td><code>uwsgi_store_access user:rw;</code></td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>设置新创建的文件和目录的访问权限，例如：</p>
<pre><code class="hljs language-shell">uwsgi_store_access user:rw group:rw all:r;
</code></pre>
<p>如果指定了任何<code>group</code>或<code>all</code>访问权限，则可以省略<code>user</code>权限：</p>
<pre><code class="hljs language-shell">uwsgi_store_access group:rw all:r;
</code></pre>
<p><a href="" id="uwsgi_temp_file_write_size"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_temp_file_write_size size;</code></td></tr>
<tr><td>Default:</td><td><code>uwsgi_temp_file_write_size 8k|16k;</code></td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>当启用从 uwsgi 服务器到临时文件的响应缓冲时，一次限制写入临时文件的数据<code>size</code>。默认情况下，<code>size</code>受<a href="#uwsgi_buffer_size">uwsgi_buffer_size</a>和<a href="#uwsgi_buffers">uwsgi_buffers</a>伪指令设置的两个缓冲区的限制。临时文件的最大大小由<a href="#uwsgi_max_temp_file_size">uwsgi_max_temp_file_size</a>指令设置。</p>
<p><a href="" id="uwsgi_temp_path"></a></p>
<table>
<thead></thead>
<tbody>
<tr><td>Syntax:</td><td><code>uwsgi_temp_path path [level1 [level2 [level3]]];</code></td></tr>
<tr><td>Default:</td><td><code>uwsgi_temp_path uwsgi_temp;</code></td></tr>
<tr><td>Context:</td><td><code>http</code> , <code>server</code> , <code>location</code></td></tr>
</tbody>
</table>
<p>定义一个目录，用于存储包含从 uwsgi 服务器接收到的数据的临时文件。在指定目录下最多可以使用三级子目录层次结构。例如，在以下配置中</p>
<pre><code class="hljs language-shell">uwsgi_temp_path /spool/nginx/uwsgi_temp 1 2;
</code></pre>
<p>临时文件可能如下所示：</p>
<pre><code class="hljs language-shell">/spool/nginx/uwsgi_temp/7/45/00000123457
</code></pre>
<p>另请参见<a href="#uwsgi_cache_path">uwsgi_cache_path</a>指令的<code>use_temp_path</code>参数。</p>
</div>
</div>
</section>
<div class="right-sidebar">
<div class="affix"><ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-6108808167664152" data-ad-slot="3102929424" data-ad-format="auto" data-full-width-responsive="true"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
</div>
</div>
<div class="ft">
<a href="#toolbar-title" id="anchorNavigationExGoTop"><i class="fa fa-arrow-up"></i></a>
<footer class="footer">
<div class="footer__container--normal">
<img alt="扫码关注公众号" title="扫码关注公众号" src="static/picture/qr-code.png" width="170" height="170">
<div class="footer__description--normal">
<p class="paragraph footer__author--normal">Docs4dev<sup class="super">&#xAE;</sup>
</p>
<p class="paragraph footer__quote&#45;&#45;normal">
如果你在使用过程中遇到任何问题，可以在 <a href="javascript:window.open('https://github.com/docs4dev/docs4dev-issues');" target="_blank" rel="noopener noreferrer">这里<i class="fa fa-external-link"></i></a> 提issue。
</p>
<div class="footer__main--normal">
<p class="paragraph footer__main__paragraph--normal copyright" style="color: #666 !important;">
<a href="javascript:window.open('https://beian.miit.gov.cn/');">
蜀ICP备14021783号-6
</a>
</p>
<p class="paragraph footer__main__paragraph--normal copyright" style="color: #666 !important;">
Copyright &#xA9; Docs4dev all
right reserved, powered by <a href="index2.html" target="_blank">Docs4dev</a></p>
</div>
</div>
</div>
<div class="box__issues">
</div>
</footer>
</div>
</div>
</div>
</div>
</div>
<script>
  var hasToc = true;
  /*  var downloadable = /!*false*!/ false;
    var editable = /!*false*!/ false;
    var code = /!*"nginx"*!/ false;
    var version = /!*"current"*!/ false;
    var type = /!*"reference"*!/ false;
    var lang = /!*"zh"*!/ 'en';
    //edit link
    require(["gitbook", "jQuery"], function (gitbook, $) {
      gitbook.events.bind('start', function (e, config) {
        // Add edit toolbar to left
        var chapterId = /!*17718*!/ 0;
        if (downloadable) {
          gitbook.toolbar.createButton({
            icon: 'fa fa-download',
            text: '下载',
            onClick: function () {
              window.open('/download?code=' + code + '&version=' + version + '&type=' + type + '&lang=' + lang);
            }
          });
        }
        if (editable) {
          gitbook.toolbar.createButton({
            icon: 'fa fa-edit',
            text: '编辑此页',
            onClick: function () {
              window.open('/docs/edit?chapterId=' + chapterId + '&lang=' + lang);
            }
          });
        }
      });
    });*/
</script>
<script>
    var code = "nginx";
    var lang = "zh";
  </script>

<script src="static/js/autocomplete-js.js"></script>
<script src="static/js/app.min.js"></script>
<script src="static/js/search.min.js"></script>
</body>
</html>
